选择单行 - 贵州茅台:
股票名称 贵州茅台
收盘价 1850.0
涨跌幅 0.05
成交量 1200
Name: 600519.SH, dtype: object
返回类型: <class 'pandas.core.series.Series'>
数据检索(Data Retrieval)是数据分析中最基础也最关键的操作之一。
在金融领域,典型应用场景包括:
通过本章学习,你将掌握以下核心技能:
loc)和基于位置(iloc)的两套索引体系一个二维数据框可以表示为矩阵 \(D \in \mathbb{R}^{n \times m}\):
\[ D_{\text{filtered}} = \{d_{ij} \mid P(d_{ij}) = \text{True}\} \]
Pandas提供了两套并行的索引系统:
| 特性 | loc(标签索引) |
iloc(位置索引) |
|---|---|---|
| 索引类型 | 数据标签(代码、日期等) | 整数位置(从0开始) |
| 切片行为 | 闭区间 [start, end] |
半开区间 [start, end) |
| 适用场景 | 语义查询(找特定股票) | 算法实现(取前N行) |
import pandas as pd
import numpy as np
# 创建示例数据:4只A股的交易日数据
data = {
'股票代码': ['600519.SH', '000858.SZ', '600036.SH', '601318.SH'],
'股票名称': ['贵州茅台', '五粮液', '招商银行', '中国平安'],
'收盘价': [1850.0, 220.5, 45.2, 52.8],
'涨跌幅': [0.05, -0.02, 0.03, -0.01],
'成交量': [1200, 3500, 8900, 5600]
}
df = pd.DataFrame(data)
# 方法1:点号访问(列名必须是合法Python标识符)
names = df.股票名称
print('方法1 - 点号选择:')
print(f'类型: {type(names)}')
print(names)方法1 - 点号选择:
类型: <class 'pandas.core.series.Series'>
0 贵州茅台
1 五粮液
2 招商银行
3 中国平安
Name: 股票名称, dtype: object
Series(一维数据)DataFrame(二维表格)索引后的DataFrame:
股票名称 收盘价 涨跌幅 成交量
股票代码
600519.SH 贵州茅台 1850.0 0.05 1200
000858.SZ 五粮液 220.5 -0.02 3500
600036.SH 招商银行 45.2 0.03 8900
601318.SH 中国平安 52.8 -0.01 5600
行索引: ['600519.SH', '000858.SZ', '600036.SH', '601318.SH']
选择单行 - 贵州茅台:
股票名称 贵州茅台
收盘价 1850.0
涨跌幅 0.05
成交量 1200
Name: 600519.SH, dtype: object
返回类型: <class 'pandas.core.series.Series'>
loc切片包含结束位置(闭区间)行和列的组合选择:
股票名称 收盘价
股票代码
600519.SH 贵州茅台 1850.0
000858.SZ 五粮液 220.5
单个标量值: 1850.0
类型: <class 'numpy.float64'>
df.at[row_label, col_label] 是专门为标量访问优化的方法,比loc更快iloc切片1:3(不包含索引3):
股票代码 股票名称 收盘价 涨跌幅 成交量
1 000858.SZ 五粮液 220.5 -0.02 3500
2 600036.SH 招商银行 45.2 0.03 8900
第0行第2列的值: 1850.0
最后一行:
股票代码 601318.SH
股票名称 中国平安
收盘价 52.8
涨跌幅 -0.01
成交量 5600
Name: 3, dtype: object
iloc的切片不包含结束位置(半开区间),与Python列表一致布尔条件(收盘价>100):
0 True
1 True
2 False
3 False
Name: 收盘价, dtype: bool
筛选结果(收盘价>100的股票):
股票代码 股票名称 收盘价 涨跌幅 成交量
0 600519.SH 贵州茅台 1850.0 0.05 1200
1 000858.SZ 五粮液 220.5 -0.02 3500
# AND条件:价格>50 且 涨幅>0(必须用括号!)
condition_and = (df['收盘价'] > 50) & (df['涨跌幅'] > 0)
print('AND条件筛选(价格>50 且 涨幅>0):')
result_and = df[condition_and]
print(result_and[['股票名称', '收盘价', '涨跌幅']])
# OR条件:名称含"银行"或"保险"
condition_or = (df['股票名称'].str.contains('银行')) | (df['股票名称'].str.contains('保险'))
print('\n\nOR条件筛选(银行或保险):')
result_or = df[condition_or]
print(result_or[['股票名称', '收盘价']])AND条件筛选(价格>50 且 涨幅>0):
股票名称 收盘价 涨跌幅
0 贵州茅台 1850.0 0.05
OR条件筛选(银行或保险):
股票名称 收盘价
2 招商银行 45.2
| 运算符 | 含义 | 示例 |
|---|---|---|
& |
AND(同时满足) | (df['PE'] < 20) & (df['ROE'] > 0.15) |
\| |
OR(满足其一) | (df['行业'] == '银行') \| (df['行业'] == '保险') |
~ |
NOT(条件取反) | ~df['代码'].isin(blacklist) |
# 传统布尔索引方法
complex_condition = (
(df['收盘价'] > 40) &
(df['收盘价'] < 2000) &
(df['涨跌幅'] > 0) &
(df['成交量'] > 2000)
)
result_complex = df[complex_condition]
print('复杂条件筛选结果:')
print(result_complex[['股票名称', '收盘价', '涨跌幅', '成交量']])
# query方法:语法更简洁
result_query = df.query('收盘价 > 40 and 收盘价 < 2000 and 涨跌幅 > 0 and 成交量 > 2000')
print('\n使用query方法的等价结果:')
print(result_query[['股票名称', '收盘价', '涨跌幅', '成交量']])复杂条件筛选结果:
股票名称 收盘价 涨跌幅 成交量
2 招商银行 45.2 0.03 8900
使用query方法的等价结果:
股票名称 收盘价 涨跌幅 成交量
2 招商银行 45.2 0.03 8900
# 从股票池中筛选关注列表中的股票
watchlist = ['600519.SH', '600036.SH']
selected = df[df['股票代码'].isin(watchlist)]
print('筛选关注列表中的股票:')
print(selected[['股票代码', '股票名称', '收盘价']])
# 组合使用:关注列表中且上涨的股票
selected_and_rising = df[
df['股票代码'].isin(watchlist) &
(df['涨跌幅'] > 0)
]
print('\n关注列表中上涨的股票:')
print(selected_and_rising[['股票名称', '涨跌幅']])筛选关注列表中的股票:
股票代码 股票名称 收盘价
0 600519.SH 贵州茅台 1850.0
2 600036.SH 招商银行 45.2
关注列表中上涨的股票:
股票名称 涨跌幅
0 贵州茅台 0.05
2 招商银行 0.03
isin()使用哈希表算法,时间复杂度O(1),比链式|高效~ 可与其他条件自由组合# 设置索引
df_with_index = df.set_index('股票代码')
print('设置股票代码为索引:')
print(df_with_index.head())
# 重置索引(索引变回普通列)
df_reset = df_with_index.reset_index()
print('\n重置索引后:')
print(df_reset.head())
# 丢弃原索引的重置
df_reset_drop = df_with_index.reset_index(drop=True)
print('\n丢弃原索引的重置(股票代码列被删除):')
print(df_reset_drop.head())设置股票代码为索引:
股票名称 收盘价 涨跌幅 成交量
股票代码
600519.SH 贵州茅台 1850.0 0.05 1200
000858.SZ 五粮液 220.5 -0.02 3500
600036.SH 招商银行 45.2 0.03 8900
601318.SH 中国平安 52.8 -0.01 5600
重置索引后:
股票代码 股票名称 收盘价 涨跌幅 成交量
0 600519.SH 贵州茅台 1850.0 0.05 1200
1 000858.SZ 五粮液 220.5 -0.02 3500
2 600036.SH 招商银行 45.2 0.03 8900
3 601318.SH 中国平安 52.8 -0.01 5600
丢弃原索引的重置(股票代码列被删除):
股票名称 收盘价 涨跌幅 成交量
0 贵州茅台 1850.0 0.05 1200
1 五粮液 220.5 -0.02 3500
2 招商银行 45.2 0.03 8900
3 中国平安 52.8 -0.01 5600
import time
# 创建10万行的数据
n_rows = 100000
large_df = pd.DataFrame({
'code': np.random.choice([f'{i:06d}.SH' for i in range(1, 1001)], n_rows),
'price': np.random.uniform(10, 100, n_rows),
'volume': np.random.randint(1000, 10000, n_rows)
})
# 方法1:布尔索引(扫描全表,O(n))
start = time.time()
result1 = large_df[large_df['code'] == '000500.SH']
time1 = time.time() - start
# 方法2:设置索引后查找(哈希表,O(1))
indexed_df = large_df.set_index('code')
start = time.time()
result2 = indexed_df.loc['000500.SH']
time2 = time.time() - start
print(f'布尔索引耗时: {time1*1000:.2f}毫秒')
print(f'索引查找耗时: {time2*1000:.2f}毫秒')
print(f'性能提升: {time1/time2:.1f}倍')布尔索引耗时: 8.49毫秒
索引查找耗时: 6.28毫秒
性能提升: 1.4倍
# 不推荐:使用循环
start = time.time()
prices_loop = []
for i in range(len(df)):
if df.iloc[i]['收盘价'] > 100:
prices_loop.append(df.iloc[i]['收盘价'])
time_loop = time.time() - start
# 推荐:向量化操作
start = time.time()
prices_vectorized = df.loc[df['收盘价'] > 100, '收盘价']
time_vectorized = time.time() - start
print(f'循环方法耗时: {time_loop*1000:.2f}毫秒')
print(f'向量化方法耗时: {time_vectorized*1000:.2f}毫秒')循环方法耗时: 0.00毫秒
向量化方法耗时: 1.17毫秒
| 优化策略 | 原理 | 适用场景 |
|---|---|---|
使用.loc而非链式索引 |
避免不必要的内存复制 | 所有筛选+取列操作 |
| 设置索引加速查找 | 哈希表O(1)查找 | 频繁按某列查找 |
| 向量化替代循环 | C/Fortran底层优化 | 所有批量数据操作 |
使用.at标量访问 |
专为单值优化 | 只需取一个值 |
import pandas as pd
import numpy as np
# 模拟1000只A股的财务数据
np.random.seed(42)
n_stocks = 1000
stocks_data = pd.DataFrame({
'股票代码': [f'{i:06d}.{"SH" if i%2==0 else "SZ"}' for i in range(1, n_stocks+1)],
'股票名称': [f'股票{i}' for i in range(1, n_stocks+1)],
'市盈率': np.random.uniform(5, 80, n_stocks),
'市净率': np.random.uniform(0.5, 10, n_stocks),
'ROE': np.random.uniform(0.05, 0.35, n_stocks),
'负债率': np.random.uniform(0.2, 0.9, n_stocks),
'股息率': np.random.uniform(0.005, 0.08, n_stocks)
})
print(f'原始股票池: {len(stocks_data)}只股票')
print(f'\n原始数据概况:')
print(stocks_data[['市盈率', '市净率', 'ROE', '负债率', '股息率']].describe())原始股票池: 1000只股票
原始数据概况:
市盈率 市净率 ROE 负债率 股息率
count 1000.000000 1000.000000 1000.000000 1000.000000 1000.000000
mean 41.769241 5.316664 0.200722 0.543263 0.042058
std 21.910302 2.775804 0.087202 0.200543 0.021511
min 5.347402 0.530574 0.050003 0.200457 0.005002
25% 22.697995 2.790206 0.128405 0.369331 0.023373
50% 42.260553 5.427972 0.200184 0.538995 0.042095
75% 60.823969 7.724418 0.277731 0.716279 0.060500
max 79.978825 9.994430 0.349346 0.899690 0.079831
# 筛选条件:PE<20, PB<3, ROE>15%, 负债率<60%, 股息率>2%
value_criteria = (
(stocks_data['市盈率'] < 20) &
(stocks_data['市净率'] < 3) &
(stocks_data['ROE'] > 0.15) &
(stocks_data['负债率'] < 0.6) &
(stocks_data['股息率'] > 0.02)
)
value_stocks = stocks_data[value_criteria].copy()
print(f'筛选后符合价值投资标准的股票: {len(value_stocks)}只')
print(f'通过率: {len(value_stocks)/len(stocks_data)*100:.1f}%')
# 按ROE降序排序展示前10只
value_stocks_sorted = value_stocks.sort_values('ROE', ascending=False)
print(f'\n价值投资组合(前10只,按ROE排序):')
print(value_stocks_sorted[['股票代码', '市盈率', '市净率', 'ROE', '负债率', '股息率']].head(10).round(2))筛选后符合价值投资标准的股票: 13只
通过率: 1.3%
价值投资组合(前10只,按ROE排序):
股票代码 市盈率 市净率 ROE 负债率 股息率
576 000577.SZ 16.03 0.72 0.34 0.34 0.04
100 000101.SZ 7.36 1.05 0.32 0.26 0.05
925 000926.SH 6.69 1.38 0.32 0.22 0.02
901 000902.SH 6.99 0.55 0.28 0.47 0.04
602 000603.SZ 18.28 2.65 0.27 0.33 0.07
668 000669.SZ 18.99 1.61 0.27 0.22 0.06
809 000810.SH 13.49 1.43 0.27 0.24 0.07
332 000333.SZ 6.08 2.67 0.23 0.32 0.04
592 000593.SZ 18.64 1.72 0.22 0.60 0.04
866 000867.SZ 16.64 0.91 0.21 0.49 0.03
价值组合统计特征:
平均市盈率: 12.71
平均市净率: 1.45
平均ROE: 25.41%
平均股息率: 4.34%
# ⚠️ 平台原始代码 - 请原样输入至教学平台(注释除外),平台才会判定答案正确
#任务一
import pandas as pd
price_SHSC = pd.read_excel("https://huoran.oss-cn-shenzhen.aliyuncs.com/1726305586753.xlsx") #导入数据
price_SHSC["日期"] = pd.to_datetime(price_SHSC["日期"] , format='%Y%m%d') # 转换为日期时间格式
price_SHSC.set_index("日期",inplace=True) # 将日期列设为price_SHSC数据框的索引
print(price_SHSC.index) #查看数据框的行索引
print(price_SHSC.columns) #查看数据框的列名
print(price_SHSC.shape) #看看数据框的形状参数
#任务二
import pandas as pd
price_SHSC = pd.read_excel("https://huoran.oss-cn-shenzhen.aliyuncs.com/1726305586753.xlsx") #导入数据
price_SHSC["日期"] = pd.to_datetime(price_SHSC["日期"] , format='%Y%m%d') # 转换为日期时间格式
price_SHSC.set_index("日期",inplace=True) # 将日期列设为price_SHSC数据框的索引
print(price_SHSC.loc["2024-04-08"]) #查看2024年4月8日的收盘价数据
print(price_SHSC.loc["2024-05-16"]) #查看2024年5月16日的收盘价数据
print(price_SHSC.loc["2024-06-11"]) #查看2024年6月11日的收盘价数据
print(price_SHSC.loc["2024-06-18":"2024-06-21"]) #查看2024年6月18日到2024年6月21日的数据
#任务三
import pandas as pd
price_SHSC = pd.read_excel("https://huoran.oss-cn-shenzhen.aliyuncs.com/1726305586753.xlsx") #导入数据
price_SHSC["日期"] = pd.to_datetime(price_SHSC["日期"] , format='%Y%m%d') # 转换为日期时间格式
price_SHSC.set_index("日期",inplace=True) # 将日期列设为price_SHSC数据框的索引
print(price_SHSC.iloc[15:28,1:4]) #截取第16行至18行、第二列至第四列
#任务四
import pandas as pd
price_SHSC = pd.read_excel("https://huoran.oss-cn-shenzhen.aliyuncs.com/20220819/xlsx/1560448223221932032.xlsx") #导入数据
price_SHSC["日期"] = pd.to_datetime(price_SHSC["日期"] , format='%Y%m%d') # 转换为日期时间格式
price_SHSC.set_index("日期",inplace=True) # 将日期列设为price_SHSC数据框的索引
print(price_SHSC[price_SHSC["白云机场"]>=10]) #截取白云机场收盘价大于等于17.6元对应的子数据框
# 输出华能国际
print(price_SHSC[(price_SHSC["华能国际"]<9.5)&(price_SHSC["南方航空"]>5.5)&(price_SHSC["三一重工"]<16)]) DatetimeIndex(['2024-04-01', '2024-04-02', '2024-04-03', '2024-04-08',
'2024-04-09', '2024-04-10', '2024-04-11', '2024-04-12',
'2024-04-15', '2024-04-16', '2024-04-17', '2024-04-18',
'2024-04-19', '2024-04-22', '2024-04-23', '2024-04-24',
'2024-04-25', '2024-04-26', '2024-04-29', '2024-04-30',
'2024-05-06', '2024-05-07', '2024-05-08', '2024-05-09',
'2024-05-10', '2024-05-13', '2024-05-14', '2024-05-15',
'2024-05-16', '2024-05-17', '2024-05-20', '2024-05-21',
'2024-05-22', '2024-05-23', '2024-05-24', '2024-05-27',
'2024-05-28', '2024-05-29', '2024-05-30', '2024-05-31',
'2024-06-03', '2024-06-04', '2024-06-05', '2024-06-06',
'2024-06-07', '2024-06-11', '2024-06-12', '2024-06-13',
'2024-06-14', '2024-06-17', '2024-06-18', '2024-06-19',
'2024-06-20', '2024-06-21', '2024-06-24', '2024-06-25',
'2024-06-26', '2024-06-27', '2024-06-28'],
dtype='datetime64[ns]', name='日期', freq=None)
Index(['白云机场', '华能国际', '南方航空', '三一重工', '中体产业'], dtype='object')
(59, 5)
白云机场 10.12
华能国际 9.83
南方航空 5.59
三一重工 15.08
中体产业 8.32
Name: 2024-04-08 00:00:00, dtype: float64
白云机场 10.17
华能国际 8.93
南方航空 5.59
三一重工 17.02
中体产业 9.14
Name: 2024-05-16 00:00:00, dtype: float64
白云机场 10.14
华能国际 9.22
南方航空 5.85
三一重工 15.93
中体产业 8.77
Name: 2024-06-11 00:00:00, dtype: float64
白云机场 华能国际 南方航空 三一重工 中体产业
日期
2024-06-18 10.00 9.14 5.95 16.02 8.21
2024-06-19 9.87 9.04 5.84 15.82 7.98
2024-06-20 9.61 9.12 5.82 15.71 7.75
2024-06-21 9.54 9.07 5.78 15.94 7.75
华能国际 南方航空 三一重工
日期
2024-04-24 9.72 5.57 15.44
2024-04-25 9.47 5.65 15.36
2024-04-26 9.42 5.72 16.04
2024-04-29 9.22 5.66 16.12
2024-04-30 9.36 5.67 16.31
2024-05-06 9.44 5.70 16.93
2024-05-07 9.23 5.64 16.87
2024-05-08 9.15 5.60 16.66
2024-05-09 9.17 5.68 17.46
2024-05-10 9.26 5.66 17.39
2024-05-13 9.46 5.64 17.37
2024-05-14 9.49 5.66 16.93
2024-05-15 9.12 5.62 16.80
白云机场 华能国际 南方航空 三一重工 中体产业
日期
2019-04-01 15.01 6.67 8.70 12.95 12.56
2019-04-02 14.70 6.64 8.65 12.63 12.41
2019-04-03 14.95 6.63 8.83 12.92 12.41
2019-04-04 15.00 6.67 9.65 13.36 12.37
2019-04-08 14.46 6.61 9.12 13.80 12.13
2019-04-09 14.47 6.57 9.09 13.56 12.60
2019-04-10 14.30 6.50 9.04 14.00 13.45
2019-04-11 14.25 6.50 8.75 13.18 12.80
2019-04-12 14.07 6.66 8.70 12.98 13.41
2019-04-15 14.05 6.58 8.59 12.87 13.14
2019-04-16 14.30 6.63 8.77 13.22 13.29
2019-04-17 14.19 6.62 8.82 13.11 12.90
2019-04-18 14.18 6.64 8.87 13.16 12.96
2019-04-19 14.44 6.71 8.88 13.13 12.98
2019-04-22 14.13 6.62 8.47 12.19 11.88
2019-04-23 14.16 6.59 8.32 12.29 11.60
2019-04-24 14.33 6.62 8.36 12.33 11.65
2019-04-25 14.45 6.67 8.20 11.88 11.18
2019-04-26 14.51 6.48 8.04 11.92 11.18
2019-04-29 15.04 6.52 8.27 12.30 10.74
2019-04-30 15.24 6.75 8.48 12.25 10.80
2019-05-06 15.09 6.71 7.65 11.40 9.73
2019-05-07 15.97 6.87 7.76 12.12 9.83
2019-05-08 15.90 6.74 7.63 11.85 10.00
2019-05-09 14.78 6.75 7.41 11.86 9.89
2019-05-10 16.26 6.80 7.62 12.45 10.20
2019-05-13 16.52 6.58 7.40 12.21 10.04
2019-05-14 15.88 6.54 7.21 11.96 10.17
2019-05-15 16.08 6.57 7.33 12.14 10.39
2019-05-16 16.58 6.45 7.41 12.15 10.37
2019-05-17 16.19 6.14 7.14 11.70 9.97
2019-05-20 15.87 6.17 7.07 11.59 10.06
2019-05-21 16.35 6.20 7.18 11.89 10.19
2019-05-22 16.69 6.16 7.19 11.95 10.89
2019-05-23 16.70 6.09 7.03 11.90 11.98
2019-05-24 16.30 6.17 7.15 12.03 11.13
2019-05-27 16.18 6.26 7.29 12.31 11.24
2019-05-28 15.92 6.28 7.29 12.65 11.06
2019-05-29 15.80 6.34 7.21 12.58 10.98
2019-05-30 15.55 6.36 7.15 12.35 11.05
2019-05-31 15.67 6.50 7.19 12.07 11.15
2019-06-03 15.75 6.59 7.31 11.96 11.25
2019-06-04 15.59 6.59 7.19 11.97 11.13
2019-06-05 15.33 6.60 7.20 12.09 11.01
2019-06-06 14.96 6.66 7.06 11.95 10.36
2019-06-10 15.64 6.59 6.98 12.21 10.35
2019-06-11 16.14 6.61 7.25 12.92 10.70
2019-06-12 16.09 6.64 7.23 12.90 10.80
2019-06-13 15.94 6.65 7.18 12.95 10.75
2019-06-14 15.80 6.64 7.09 12.79 10.93
2019-06-17 15.68 6.69 7.12 12.75 10.98
2019-06-18 16.18 6.63 7.13 12.88 10.94
2019-06-19 16.29 6.65 7.35 12.90 11.26
2019-06-20 17.16 6.69 7.59 13.18 11.70
2019-06-21 17.02 6.66 7.58 13.13 11.60
2019-06-24 17.65 6.53 7.54 13.18 12.16
2019-06-25 17.82 6.42 7.44 13.05 12.08
2019-06-26 17.72 6.47 7.55 12.95 12.08
2019-06-27 17.83 6.37 7.74 12.95 10.87
2019-06-28 18.20 6.23 7.72 13.08 10.23
白云机场 华能国际 南方航空 三一重工 中体产业
日期
2019-04-01 15.01 6.67 8.70 12.95 12.56
2019-04-02 14.70 6.64 8.65 12.63 12.41
2019-04-03 14.95 6.63 8.83 12.92 12.41
2019-04-04 15.00 6.67 9.65 13.36 12.37
2019-04-08 14.46 6.61 9.12 13.80 12.13
2019-04-09 14.47 6.57 9.09 13.56 12.60
2019-04-10 14.30 6.50 9.04 14.00 13.45
2019-04-11 14.25 6.50 8.75 13.18 12.80
2019-04-12 14.07 6.66 8.70 12.98 13.41
2019-04-15 14.05 6.58 8.59 12.87 13.14
2019-04-16 14.30 6.63 8.77 13.22 13.29
2019-04-17 14.19 6.62 8.82 13.11 12.90
2019-04-18 14.18 6.64 8.87 13.16 12.96
2019-04-19 14.44 6.71 8.88 13.13 12.98
2019-04-22 14.13 6.62 8.47 12.19 11.88
2019-04-23 14.16 6.59 8.32 12.29 11.60
2019-04-24 14.33 6.62 8.36 12.33 11.65
2019-04-25 14.45 6.67 8.20 11.88 11.18
2019-04-26 14.51 6.48 8.04 11.92 11.18
2019-04-29 15.04 6.52 8.27 12.30 10.74
2019-04-30 15.24 6.75 8.48 12.25 10.80
2019-05-06 15.09 6.71 7.65 11.40 9.73
2019-05-07 15.97 6.87 7.76 12.12 9.83
2019-05-08 15.90 6.74 7.63 11.85 10.00
2019-05-09 14.78 6.75 7.41 11.86 9.89
2019-05-10 16.26 6.80 7.62 12.45 10.20
2019-05-13 16.52 6.58 7.40 12.21 10.04
2019-05-14 15.88 6.54 7.21 11.96 10.17
2019-05-15 16.08 6.57 7.33 12.14 10.39
2019-05-16 16.58 6.45 7.41 12.15 10.37
2019-05-17 16.19 6.14 7.14 11.70 9.97
2019-05-20 15.87 6.17 7.07 11.59 10.06
2019-05-21 16.35 6.20 7.18 11.89 10.19
2019-05-22 16.69 6.16 7.19 11.95 10.89
2019-05-23 16.70 6.09 7.03 11.90 11.98
2019-05-24 16.30 6.17 7.15 12.03 11.13
2019-05-27 16.18 6.26 7.29 12.31 11.24
2019-05-28 15.92 6.28 7.29 12.65 11.06
2019-05-29 15.80 6.34 7.21 12.58 10.98
2019-05-30 15.55 6.36 7.15 12.35 11.05
2019-05-31 15.67 6.50 7.19 12.07 11.15
2019-06-03 15.75 6.59 7.31 11.96 11.25
2019-06-04 15.59 6.59 7.19 11.97 11.13
2019-06-05 15.33 6.60 7.20 12.09 11.01
2019-06-06 14.96 6.66 7.06 11.95 10.36
2019-06-10 15.64 6.59 6.98 12.21 10.35
2019-06-11 16.14 6.61 7.25 12.92 10.70
2019-06-12 16.09 6.64 7.23 12.90 10.80
2019-06-13 15.94 6.65 7.18 12.95 10.75
2019-06-14 15.80 6.64 7.09 12.79 10.93
2019-06-17 15.68 6.69 7.12 12.75 10.98
2019-06-18 16.18 6.63 7.13 12.88 10.94
2019-06-19 16.29 6.65 7.35 12.90 11.26
2019-06-20 17.16 6.69 7.59 13.18 11.70
2019-06-21 17.02 6.66 7.58 13.13 11.60
2019-06-24 17.65 6.53 7.54 13.18 12.16
2019-06-25 17.82 6.42 7.44 13.05 12.08
2019-06-26 17.72 6.47 7.55 12.95 12.08
2019-06-27 17.83 6.37 7.74 12.95 10.87
2019-06-28 18.20 6.23 7.72 13.08 10.23
| 操作类型 | 方法 | 关键特性 |
|---|---|---|
| 列选择 | df['列名'] / df[['列1','列2']] |
单列返回Series,多列返回DataFrame |
| 标签索引 | df.loc[行标签, 列标签] |
闭区间切片,语义清晰 |
| 位置索引 | df.iloc[行位置, 列位置] |
半开区间切片,算法友好 |
| 布尔筛选 | df[条件] |
&/\|/~组合,括号必须 |
| 成员检查 | df['列'].isin(列表) |
哈希表O(1),高效筛选 |
| 简洁查询 | df.query('条件表达式') |
类SQL语法,复杂条件可读性好 |
[商业大数据分析与应用]